Amazon QuickSightでGoogle BigQueryのデータを可視化する方法いろいろ
データアナリティクス事業本部インテグレーション部コンサルティングチーム・新納(にいの)です。
この記事は「AWS Analytics Advent Calendar 2023」の19日目のエントリです。
AWS基盤上にあるデータとBigQueryで収集しているデータをブレンディングしたいといった用途で、QuickSightからBigQueryへの接続をしたいケースがあるかと思います。実現したい内容によって取れる手法が変わるため、各手法とユースケースをお届けします。
その1:QuickSightでBigQueryのデータセットを作成
2023年11月のアップデートでQuickSightでBigQueryのデータセットを作成できるようになりました。
接続方法
以下を参考に設定を進めます。
Google Cloud側で権限設定
まずはGoogle Cloud側で「IAMと管理」からアクセス権限の設定が必要です。
新しいプリンシパルとしてメールアドレスを追加します。QuickSightからBigQueryにアクセスする際に利用されます。今回はAWSのログインに使用しているメールアドレスを指定しています。
ロールには以下を指定します。
- BigQueryメタデータ閲覧者
- BigQueryジョブユーザー
次に、BigQuery側で共有の設定をします。QuickSightで可視化したいデータベースのメニューボタンから「共有」を選択します。
先ほどプリンシパルに指定したメールアドレスでアクセス権を付与します。ロールには「BigQueryデータ閲覧者」を指定します。
QuickSightでデータセット作成
QuickSightで新規データセットの作成からBigQueryを選択します。
項目 | 値 |
---|---|
データソース名 | 任意 |
プロジェクトID | Google CloudのプロジェクトID。Google Cloudコンソール画面「Cloudの概要」から確認可能 |
データセットリージョン | BigQueryのデータセットロケーション。対象データベースのエクスプローラから確認可能 |
サインインをクリックしてGoogleの認証を行います。
対象のデータセットとテーブルを選択します。
QuickSightでBigQueryのデータが確認できるようになりました。
通常、QuickSightではデータセットに直接接続する「直接クエリ」と一旦データをインメモリデータベースに格納する「SPICE」が選択可能です。BigQueryデータセットの場合はSPICEのみが選択可能です。
ユースケース
現段階ではSPICEのみ対応しているため、スケジュール更新を利用すると最短1時間毎に更新可能です。直接クエリする必要がなく、BigQuery側でデータマートを作っているなどのケースでは便利に使えそうです。
その2:Amazon Athenaのデータソースコネクタを経由
2022年のアップデートで、Amazon AthenaのFederated Queryを利用し、BigQueryへ接続できるようになりました。この機能を利用してAthena上にテーブルを作成し、QuickSightで可視化することもできます。
このコネクタの実態はVPC Lambdaです。VPC Lambdaはユーザー管理のVPCリソースと通信させたい時に利用します。VPCのENIを経由し、Lambdaへ接続できるようする仕組みを利用して、S3 VPCエンドポイントやAthenaへ接続し、NAT GatewayでSecretManagerなどのパブリックサービスやBigQueryに接続をします。
(画像引用:[新機能] Amazon Athena データソースコネクタを使ってBigQueryのライブデータにクエリしてみました! | DevelopersIO)
詳細な設定方法は以下の通り。
ユースケース
QuickSightから直接BigQueryのデータセットを作成するよりは作成するリソースや手間は発生するのですが、BigQueryのデータにライブ接続が可能となります。さらに、Athenaでテーブルを作成することによってGlue Data Catalogでメタデータの管理ができるようになるため、データをAWS基盤上で管理しており、メタデータの管理も一元的に行いたいケースには向いているのではないでしょうか。
ただし、VPC Lambdaを経由する性質上、Lambdaの最大実行時間である15分という制限があり、ボトルネックとなる可能性があります。
その3:AWS GlueからBigQueryに接続してS3にデータを蓄積、Athenaでテーブル化
AWS Glueで直接BigQueryに接続することも可能です。SecretManagerでGoogle Cloudの認証情報を保存し、GlueのビジュアルエディタからBigQueryのコネクタを選択して設定します。
コネクタをセットアップすると、Glue Jobのビジュアルエディタでコネクタが選べるようになります。詳細な設定方法は以下の通り。
ユースケース
Glue Jobを利用することにより、変換処理も一連の流れの中で実施できます。ビジュアルエディタであればGUIで変換処理を作成できてわかりやすいです。Lambdaに比べて最大実行時間が長く、Pandas、NumPyなど分析モジュールが導入済みであり、Glue Jobの機能を使って処理性能をスケールさせることも可能です。
Spark自体の学習コストはSQLと比較して高いですが、BigQueryから取得したデータを加工する必要があり、他の変換処理もGlueで実行しているなどの理由で一元的な管理がしたい場合は向いているのではないでしょうか。
その4:Amazon AppFlowでBigQueryコネクタを利用する
GUIでデータパイプラインを作成できるAmazon AppFlowにはBigQueryコネクタがあります。AppFlowではターゲットとなるサービスにRedshiftやS3があるので、QuickSightで接続したいデータソースにデータを投入可能です。
詳細な設定方法は以下の通り。(後日ブログにします…)
ユースケース
GUIベースで設定が可能であり、RedshiftなどのS3以外のデータソースへも直接投入できるのが他の方法との違いです。データ変換が必要なく、S3以外のデータソースにも投入したいケースや、簡単に設定をしてしまいたいケースに有効そうです。
最後に
QuickSightでBigQueryのデータを可視化する方法について4種類ご紹介しました。一番簡単なのはQuickSightでデータセットを作ってしまうことですが、ライブ接続が必要な場合はAthenaのコネクタを利用するなど、いろいろ使い分けができます。この記事がどなたかのお役に立てば幸いです。少し早いですが、メリークリスマス!